<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
//测试的契约和实现
use App\Contracts\PaymentGateway;
use App\Services\StripePaymentGateway;

class AppServiceProvider extends ServiceProvider
{
    /**
     * AppServiceProvider.php 是 Laravel 应用程序中的一个核心服务提供者，
     * 位于 app/Providers 目录下。服务提供者是所有 Laravel 应用程序引导的中心。你的应用以及 Laravel 的核心服务都是通过服务提供者引导和配置的
     * AppServiceProvider 是一个非常灵活的服务提供者，允许你在 Laravel 应用启动的过程中注册和引导各种服务。无论是简单的服务绑定还是复杂的事件监听、路由模型绑定等高级功能，
     * 都可以通过这个文件轻松实现。这使得 AppServiceProvider 成为了定制和扩展 Laravel 功能的强大工具。
     */

    /**
     * Register any application services.
     * 注册绑定、事件监听器、中间件和路由命令：你可以在 AppServiceProvider 中使用 register 方法来注册这些内容。
     */
    public function register(): void
    {
        // 绑定契约到具体实现
        $this->app->bind(PaymentGateway::class, StripePaymentGateway::class);
    }

    /**
     * Bootstrap any application services.
     * 引导已注册的任何服务：在 boot 方法中，你可以进行依赖于其他服务的设置工作，比如发布配置文件和视图、监听事件等。
     */
    public function boot(): void
    {
        //
    }
}
